package com.x8.mt.service;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.x8.mt.dao.IMetadata_tablefieldDao;
import com.x8.mt.entity.Metadata_relationtable;
import com.x8.mt.entity.Metadata_tablefield;

@Service
public class Metadata_tablefieldService {
	@Resource
	IMetadata_tablefieldDao iMetadata_tablefieldDao;
	@Resource
	Metadata_relationtableService metadata_relationtableService;
	@Resource
	Datasource_connectinfoService datasource_connectinfoService;
	@Resource
	ConnectinfoService connectinfoService;
	@Resource
	SourcesystemService sourcesystemService;
	@Resource
	KettleMetadataCollectService kettleMetadataCollectService;
	
	/**
	 * 
	 * 作者:itcoder
	 * 时间:2017年12月13日
	 * 作用:根据id获取metadata_tablefield对象
	 */
	public Metadata_tablefield getMetadata_tablefieldByid(int id){
		try{
			return iMetadata_tablefieldDao.getMetadata_tablefieldByid(id);
		}catch(Exception e){
			return null;
		}
	}
	
	public boolean insertMetadata_tablefield(Metadata_tablefield metadata_tablefield){
		try {
			return iMetadata_tablefieldDao.insert(metadata_tablefield)>0 ? true:false;
		} catch (Exception e) {
			return false;
		}
	}
	
	public List<Metadata_tablefield> getMetadata_tablefieldListById(int id){
		try{
			return iMetadata_tablefieldDao.getMetadata_tablefieldListById(id);
		}catch(Exception e){
			return null;
		}
	}
	
	/**
	 * 
	 * 作者:itcoder
	 * 时间:2017年12月11日
	 * 作用:模糊查询metadata_tablefield表
	 */
	public List<Metadata_tablefield> getMetadata_tablefieldByLike(String name){
		try{
			return iMetadata_tablefieldDao.getMetadata_tablefieldByLike(name);
		}catch(Exception e){
			return null;
		}
	}
	
	public boolean updateDescribe(Metadata_tablefield metadata_tablefield) {
		try {
			return iMetadata_tablefieldDao.updateDescibe(metadata_tablefield) > 0 ? true: false;
		} catch (Exception e) {
			return false;
		}
	}
	
	public boolean deleteMatadata(int id){
		try{
			return iMetadata_tablefieldDao.deleteMetadata(id)>0?true:false;
		}catch(Exception e){
			return false;
		}
	}
	
	/**
	 * 
	 * 作者:GodDispose
	 * 时间:2018年1月20日
	 * 作用:根据字段id查找字段的路径
	 */
	public String getPath(int id,String type){
		try{
			StringBuilder path = new StringBuilder();
//			if(type.equals("metadata_tablefieldmapping")){
//				//获取字段映射元数据的位置
//				path.append("ETL/kettle数据集成/");
//				path.append(metadata_relationtableService.getMetadata_relationtableByid(id).getName());
//				
//			}else if(type.equals("metadata_relationtable")){
//				//获取表字段元数据的位置
//				int collectId = metadata_relationtableService.getMetadata_relationtableByid(id).getCollectjobid();
//				int connectinfoId = kettleMetadataCollectService.getCollectJobById(collectId).getConnectinfoid();
//				path.insert(0, "/" + connectinfoService.getConnectinfoByid(connectinfoId).getName());
//				
//				int sourceId = connectinfoService.getConnectinfoByid(connectinfoId).getParentid();
//
//				while(sourcesystemService.getSourcesystemsById(sourceId) != null){
//					if(sourcesystemService.getSourcesystemsById(sourceId).getType().equals("parent")){
//						path.insert(0, sourcesystemService.getSourcesystemsById(sourceId).getName());
//						break;
//					}else{
//						path.insert(0, "/" + sourcesystemService.getSourcesystemsById(sourceId).getName());
//						sourceId = sourcesystemService.getSourcesystemsById(sourceId).getParentid();
//					}
//				}
//			}else if(type.equals("metadata_tablefield")){
//				//获取字段元数据的位置
//				int tableId = iMetadata_tablefieldDao.getMetadata_tablefieldByid(id).getMetadata_relationtableid();
//				path.insert(0, "/" + metadata_relationtableService.getMetadata_relationtableByid(tableId).getName());
//				
//				int collectId = metadata_relationtableService.getMetadata_relationtableByid(tableId).getCollectjobid();
//				int connectinfoId = kettleMetadataCollectService.getCollectJobById(collectId).getConnectinfoid();
//				path.insert(0, "/" + connectinfoService.getConnectinfoByid(connectinfoId).getName());
//				
//				int sourceId = connectinfoService.getConnectinfoByid(connectinfoId).getParentid();
//
//				while(sourcesystemService.getSourcesystemsById(sourceId) != null){
//					if(sourcesystemService.getSourcesystemsById(sourceId).getType().equals("parent")){
//						path.insert(0, sourcesystemService.getSourcesystemsById(sourceId).getName());
//						break;
//					}else{
//						path.insert(0, "/" + sourcesystemService.getSourcesystemsById(sourceId).getName());
//						sourceId = sourcesystemService.getSourcesystemsById(sourceId).getParentid();
//					}
//				}
//			}			
			return path.toString();
		}catch(Exception e){
			return null;
		}
	}
}
